home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1995-11-25 | 2.9 KB | 117 lines |
- IMPLEMENTATION MODULE MegaBrain;
- (* Version*: 20.12.89 00:44*)
- FROM Timer IMPORT Start,Stop;
- FROM GEMDOS IMPORT PrnOut(* CHAR *) ;
- FROM SYSTEM IMPORT WORD,VAL;
- VAR HalbePeriode : LONGCARD;
-
-
- PROCEDURE SetFrequence(Frequenz :INTEGER);
- BEGIN
- HalbePeriode := 500 DIV Frequenz;
- END SetFrequence;
-
-
- PROCEDURE Down(EndFrequenz:INTEGER; PeriodenZuwachs:LONGCARD; status1,status2,
- status01,status02:CHAR);
- VAR StopUhr1, EndPeriodenDauer,Ein100telPerioden,Hundert : LONGCARD;
-
- BEGIN
- EndPeriodenDauer := 500 DIV EndFrequenz;
- Hundert := 100;
- Ein100telPerioden := Hundert * HalbePeriode;
- Start(StopUhr1);
- REPEAT
- PrnOut(status1);
- REPEAT
- UNTIL Stop(StopUhr1) > HalbePeriode;
-
- Start(StopUhr1);
- PrnOut(status01);
- REPEAT
- UNTIL Stop(StopUhr1) > HalbePeriode;
-
- Start(StopUhr1);
- PrnOut(status2);
- REPEAT
- UNTIL Stop(StopUhr1) > HalbePeriode;
-
- Start(StopUhr1);
- PrnOut(status02);
- REPEAT
- UNTIL Stop(StopUhr1) > HalbePeriode;
- (* Hier Uhr wieder starten damit die Zeit zum berechnen
- nicht die Frequenz verfälscht !*)
- Start(StopUhr1);
- Ein100telPerioden:= Ein100telPerioden+PeriodenZuwachs;
- HalbePeriode:= Ein100telPerioden DIV Hundert;
- UNTIL EndPeriodenDauer <= HalbePeriode;
- END Down;
-
- PROCEDURE Up(EndFrequenz:INTEGER; PeriodenAbnahme:LONGCARD; status1,status2,
- status01,status02:CHAR);
- VAR StopUhr1, EndPeriodenDauer,Ein100telPerioden,Hundert : LONGCARD;
-
- BEGIN
- EndPeriodenDauer := 500 DIV EndFrequenz;
- Hundert := 100;
- Ein100telPerioden := Hundert * HalbePeriode;
- Start(StopUhr1);
- REPEAT
- PrnOut(status1);
- REPEAT
- UNTIL Stop(StopUhr1) > HalbePeriode;
-
- Start(StopUhr1);
- PrnOut(status01);
- REPEAT
- UNTIL Stop(StopUhr1) > HalbePeriode;
-
- Start(StopUhr1);
- PrnOut(status2);
- REPEAT
- UNTIL Stop(StopUhr1) > HalbePeriode;
-
- Start(StopUhr1);
- PrnOut(status02);
- REPEAT
- UNTIL Stop(StopUhr1) > HalbePeriode;
- (* *)
- Start(StopUhr1);
- Ein100telPerioden:= Ein100telPerioden-PeriodenAbnahme;
- HalbePeriode:= Ein100telPerioden DIV Hundert;
- UNTIL EndPeriodenDauer >= HalbePeriode;
- END Up;
-
- PROCEDURE Stay(Dauer:LONGCARD; status1,status2,status01,status02:CHAR);
- VAR StopUhr1,StopUhr2,N1000 :LONGCARD;
-
- BEGIN
- N1000:= 1000;
- Start (StopUhr2);
- Start(StopUhr1);
- REPEAT
- PrnOut(status1);
- REPEAT
- UNTIL Stop(StopUhr1) > HalbePeriode;
-
- Start(StopUhr1);
- PrnOut(status01);
- REPEAT
- UNTIL Stop(StopUhr1) > HalbePeriode;
-
- Start(StopUhr1);
- PrnOut(status2);
- REPEAT
- UNTIL Stop(StopUhr1) > HalbePeriode;
-
- Start(StopUhr1);
- PrnOut(status02);
- REPEAT
- UNTIL Stop(StopUhr1) > HalbePeriode;
- Start(StopUhr1);
- UNTIL Stop(StopUhr2) > N1000*Dauer;
- END Stay;
-
- END MegaBrain.
-